#ifndef LINE3D_H_
#define LINE3D_H_

#pragma once
#include "Point3d.h"
#include "Vector3d.h"

namespace Geometry
  {
  class Line3d
    {
    public:
      Line3d(const Point3d& i_point, const Vector3d& i_direction);
      Line3d(const Point3d& i_point_1, const Point3d& i_point_2);

      Point3d GetPoint() const;
      Vector3d GetDirection() const;

      bool ContainsPoint(const Point3d& i_point) const;

      Point3d GetProjection(const Point3d& i_point) const;

    private:
      Point3d m_point;

      // contains normalized direction vector
      Vector3d m_direction;

    };

  bool operator==(const Line3d& i_left, const Line3d& i_right);
  }

#endif